'''
读文件相关操纵
'''
import configparser
import os.path

import yaml


def get_project_path():
    '''
    获取当前工程路径
    :return:
    '''

    # 当前文件的路径  E:\软件测试\learnjava\接口测试\zonghe\caw\ReadFile.py
    cf = os.path.realpath(__file__)
    # 上一级目录   E:\软件测试\learnjava\接口测试\zonghe\caw
    cd = os.path.dirname(cf)
    # 再上一级目录  E:\软件测试\learnjava\接口测试\zonghe
    cd = os.path.dirname(cd) + "\\"
    return cd


def read_ini(file_path, key):
    '''
    读取ini文件
    :param file_path:   文件路径
    :param key:  ini中的key
    :return:   key对应的value值
    '''

    file_path = get_project_path() + file_path
    # 创建一个实例
    cp = configparser.ConfigParser()
    # 使用read方法读取文件
    cp.read(file_path)
    # 获取section下key对应的value
    return cp.get("env", key)


def read_yaml(file_path):
    '''
    读yaml文件
    :param file_path:   文件路径
    :return:   文件内容
    '''

    file_path = get_project_path() + file_path
    with open(file_path, mode='r', encoding='utf-8') as f:
        # 读文件
        content = f.read()
        # 使用yaml提供的load方法转成yaml格式的
        ret = yaml.load(content, Loader=yaml.FullLoader)
        # 返回列表，列表中的元素为字典
        return ret


if __name__ == '__main__':
    # 自动获取路径   E:\软件测试\learnjava\接口测试\zonghe\
    url = read_ini(r'test_env\env.ini', "url")
    print(url)
    db = read_ini(r'test_env\env.ini', "db")
    print(db)
    print(type(db))  # 字符串格式
    print(type(eval(db)))  # 字符串转成字典格式

    ret = read_yaml(r"test_data\resgister_file.yaml")
    print(ret)
